#include <stdio.h>
#include "sqlite3.h"
#include "data.h"
#include "admin.h"
sqlite3 *db;
// 管理员结构体


// 全局变量：当前登录的管理员（NULL表示未登录）

Admin *current_admin = NULL;
// 显示主菜单
void show_main_menu() {
    printf("\n===== 图书管理系统 =====\n");
    printf("1. 管理员注册\n");
    printf("2. 管理员登录\n");
    printf("3. 进入图书管理（需登录）\n");
    printf("0. 退出系统\n");
    printf("=======================\n");
    printf("请选择操作: ");
}
void show_book_menu() {
    printf("\n===== 图书管理功能 =====\n");
    printf("1. 添加图书\n");
    printf("2. 查询所有图书\n");
    printf("3. 根据ID查询图书\n");
    printf("4. 更新图书库存\n");
    printf("5. 删除图书\n");
    printf("6. 注销登录\n");
    printf("0. 返回主菜单\n");
    printf("=======================\n");
    printf("请选择操作: ");
}
void init() {
    //使用printf之后，没有立即输出内容，此时可以设置为五缓冲模式
    // 确保stdout无论是否重定向，都实时输出
    setvbuf(stdout, NULL, _IONBF, 0);

    if (init_db() != 0) {
        fprintf(stderr, "init:系统初始化失败!\n");
        return;
    }
}
int main(){
    init();
    int main_choice;
    do {
        show_main_menu();
        // 读取选择并清理缓冲区
        if (scanf("%d", &main_choice) != 1) {
            fprintf(stderr, "输入无效，请重新输入\n");
            while (getchar() != '\n');  // 清空错误输入
            main_choice = -1;
            continue;
        }
        while (getchar() != '\n');  // 清理剩余字符

        switch (main_choice) {
            case 1:
                current_admin=register_admin(db);
                break;
            case 2:
                if (current_admin) {
                    printf("已登录，无需重复登录\n");
                } else {
                    current_admin=login_admin(db);  // 需确保 login_admin 正确设置 current_admin
                }
                break;
            case 3:
                if (!current_admin) {
                    printf("请先登录\n");
                    break;
                }
                // 图书管理子菜单
                int book_choice;
                do {
                    show_book_menu();
                    if (scanf("%d", &book_choice) != 1) {
                        fprintf(stderr, "输入无效，请重新输入\n");
                        while (getchar() != '\n');
                        book_choice = -1;
                        continue;
                    }
                    while (getchar() != '\n');

                    switch (book_choice) {
                        case 1: add_book(db); break;
                        case 2: query_all_books(db); break;
                        case 3: query_book_by_id(db); break;
                        case 4: update_book_quantity(db); break;
                        case 5: delete_book(db); break;
                        case 6:
                            logout_admin(db);
                            if (current_admin) {
//                                    free(current_admin);
                                current_admin = NULL;
                            }
                            book_choice = 0;
                            break;
                        case 0: printf("返回主菜单\n"); break;
                        default: printf("无效的选择\n");
                    }
                } while (book_choice != 0);
                break;
            case 0:
                printf("感谢使用，再见！\n");
                break;
            default:
                printf("无效的选择，请重新输入\n");
        }
//        printf("%d\n",current_admin);
    } while (main_choice != 0);

    // 清理资源
    /*  if (current_admin) {
          free(current_admin);
          current_admin = NULL;
      }*/
    sqlite3_close(db);
    return 0;

}

